/***
 * @Description: 该文件主要用于整个协议栈的基础方面的配置
 * @Author: Liverpool
 * @Date: 2024-02-28 01:36:52
 * @LastEditTime: 2024-02-28 01:37:11
 * @LastEditors: Liverpool
 */
#ifndef CONFIG_H
#define CONFIG_H

//***************************************定义各个文件的debug信息的等级***************************************************
#define Debug_MemoryBlock D_DEBUG_Level_Error
#define Debug_Queue D_DEBUG_Level_Error
#define Debug_MessageHandler D_DEBUG_Level_Error
#define Debug_Packet D_DEBUG_Level_Error
#define Debug_NetInit D_DEBUG_Level_Error
#define Debug_NetPlat D_DEBUG_Level_Error
#define Debug_NetInterface D_DEBUG_Level_Error
#define Debug_Ethernet D_DEBUG_Level_Error
#define Debug_Tools D_DEBUG_Level_Error
#define Debug_Timer D_DEBUG_Level_Error
#define Debug_ARP D_DEBUG_Level_Error
#define Debug_IPv4 D_DEBUG_Level_Error
#define Debug_ICMPv4 D_DEBUG_Level_Error
#define Debug_SOCKET D_DEBUG_Level_Info
#define Debug_RAW D_DEBUG_Level_Info
//**************************************定义各个文件之间所需要使用的数据宏定义*******************************************
#define NET_ENDIAN_LITTLE 1 // 协议栈的大小端的编码方式 默认小端定义
// 消息处理文件
#define MessageHandler_Message_Cnt 10            // 定义在消息处理文件中的消息队列的长度
#define MessageHandler_Locker_Type Locker_Thread // 定义消息处理文件中的锁的类型
// 数据包文件
#define Packet_PacketBlock_Size 128 // 每个数据块的缓存数组大小
#define Packet_PacketBlock_Cnt 100  // 定义数据块的个数
#define Packet_Packet_Cnt 100       // 定义数据包的个数
// 网络接口文件
#define D_Net_Interfaces_HWaddr_Size 10 // 硬件地址长度
#define Net_Interface_Name_Size 10      // 网络接口名称长度
#define NET_InQueue_Size 50             // 输入队列长度
#define NET_OutQueue_Size 50            // 输出队列长度
#define Net_Interface_Device_Cnt 10     // 网络接口数量
// 定时器文件
#define TIMER_NAME_SIZE 32 // 定时器的名字长度
// ARP文件
#define ARP_CACHE_SIZE 50      // ARP缓存表的尺寸大小
#define ARP_MAX_Packet_Wait 5  // ARP缓存表项最大的等待数据包长度
#define ARP_TIMER_MS 1         // ARP缓存表的定时器扫描时间
#define ARP_ENTRY_STABLE_MS 5  // ARP缓存表的稳定状态的超时时间
#define ARP_ENTRY_PENDING_MS 3 // ARP缓存表的等待状态的超时时间
#define ARP_ENTRY_RETRY_CNT 5  // ARP缓存表表项重连的次数
// IPv4协议
#define IPv4_FRAGMENT_MAX_SIZE 5      // IPv4协议最多支持不同的ID同时进行数据报的分片重组
#define IPv4_FRAGMENT_MAX_BUF_SIZE 10 // IPv4协议一个分片结构中最大存储的数据包数量
#define IPv4_FRAGMENT_SCAN_PERIOD 1   // IPv4协议分片结构扫描时间
#define IPv4_FRAGMENT_MAX_MS 10       // IPv4协议分片结构的最大等待时间
// RAW结构
#define RAW_MAX_NUM 10        // raw数组的最长个数
#define D_RAW_MAX_RECV_NUM 50 // raw接收队列的最长个数

#endif // !CONFIG_H